Applications that use image data are found in many different fields, such as security control, television, broadcasting, social media, video telephony, videoconferencing, wireless devices, streaming media applications, remote desktop, cloud computing, and others. Image data may refer to video data, computer generated graphics data, desktop data, or any other type of data depicting a visual perception. Image data may be stored in a variety of medium (DVDs, Blu-Ray disks, mobile devices, memory sticks, hard-drive, etc.) and may be transmitted through a variety of wired or wireless transmission media (also called a carrier) (e.g., electrical, optical, radio, acoustical or other form of propagated signals—such as carrier waves, infrared signals etc.).
Image compression and decompression are performed to reduce the consumption of expensive resources, such as storage space or transmission bandwidth. In general, a codec (encoder/decoder) includes an encoder used to convert the source image data into a compressed form occupying a reduced space prior to storage or transmission. The codec may also comprise a decoder which receives compressed data and converts it into a decompressed image or stream ready for display or for further processing. The codec may be implemented only in software executed on one or more general purpose processors, implemented only on dedicated hardware components, or a combination of software running on general purpose processors and dedicated hardware components. Compression efficiency of encoders is typically defined by the bit rate and the perceived image quality of the decompressed video stream. In the following description, compression quality or the quality of compression refer to “image quality of the decompressed video stream as perceived by a person viewing the decompressed video stream”. In many applications, it is desirable to have a constant bit rate, maximum bit rate, or substantially constant bit rate while maintaining a good quality image. This can be particularly challenging for real time encoders that encode image data that has a high variability in content from picture to picture and/or within the same picture or when encoding/decoding pictures with high resolutions, high frame rate, or when low latency is desired.
Pictures of desktop data streams (which are referred to herein as desktop streams) present unique characteristics compared to pictures of other types of image data streams. For example, a typical picture from a desktop stream includes portions that remain static (e.g., the background and certain windows that are open on the desktop picture) while other portions of the desktop (e.g., a window displaying video) may be in motion. There can be long periods of user inactivity where the desktop pictures remain static followed by sudden peaks of user activity (e.g., when the user opens or moves a window) which put high demands on the system causing unacceptable latency.
Therefore, encoding a desktop image data stream poses unique challenges compared to encoding other types of image data streams.